<%@page session="false"%>
<%@page import="java.net.*, java.io.*"%>
<%!String[] serverUrls = {
	    //"<url>[,<token>]"
		//"http://service.arcgisonline.cn/search/0d662add2442520171ce26ef12954f03952b942d5ef78a0c416b53c53bb118f3/Route"
		//"https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task",
		//"https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task"
		//"http://arcgisstg.mcd.com.cn:6080/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task"
		"http://api.geoq.cn/f9a56ad4ce1ac9c20eba882221703964200aeb4817058bf9a4f69cce3deaceeb/search"
};
%>
<%
try {
	  String reqUrl = request.getQueryString();
	  boolean allowed = false;
	  String token = null;
	  for(String surl : serverUrls) {
	    String[] stokens = surl.split("\\s*,\\s*");
	    if(reqUrl.toLowerCase().contains(stokens[0].toLowerCase())) {
	      allowed = true;
	      if(stokens.length >= 2 && stokens[1].length() > 0)
	        token = stokens[1];
	      break;
	    }
	  }
	  if(reqUrl.endsWith(".png")) allowed = true;
// 	  if(!allowed) {
// 	    response.setStatus(403);
// 	    return;
// 	  }
	  if(token != null) {
	    reqUrl = reqUrl + (reqUrl.indexOf("?") > -1 ? "&" : "?") + "token=" + token;
	  }
	  		URL url = new URL(reqUrl);
	        HttpURLConnection con = (HttpURLConnection)url.openConnection();
	        con.setDoOutput(true);
	        con.setRequestMethod(request.getMethod());
	        if(request.getContentType() != null) {
	          con.setRequestProperty("Content-Type", request.getContentType());
	        }
	  		con.setRequestProperty("Referer", request.getHeader("Referer"));
	        int clength = request.getContentLength();
	        if(clength > 0) {
	                con.setDoInput(true);
	                InputStream istream = request.getInputStream();
	                OutputStream os = con.getOutputStream();
	                final int length = 5000;
	          byte[] bytes = new byte[length];
	          int bytesRead = 0;
	          while ((bytesRead = istream.read(bytes, 0, length)) > 0) {
	            os.write(bytes, 0, bytesRead);
	          }
	        }
	  else {
	    con.setRequestMethod("GET");
	  }
		out.clear();
		out = pageContext.pushBody();
		OutputStream ostream = response.getOutputStream();
		response.setContentType(con.getContentType());
		InputStream in = con.getInputStream();
		final int length = 5000;
		byte[] bytes = new byte[length];
		int bytesRead = 0;
		while ((bytesRead = in.read(bytes, 0, length)) > 0) {
			ostream.write(bytes, 0, bytesRead);
		}
	} catch(Exception e) {
		//response.setStatus(500);
	}
%>